Non-volatile memory (NVM) is the general term used to describe the type of memory that retains its data even when power is turned off, and this sort of memory is typically used to store data that must not be lost when a device incorporating the memory looses power. Such devices include computers, CD-ROMs, mobile phones, digital cameras, compact flash cards, mp3 players and Micro-Controller Units (MCUs) from the automotive, aero and other industries.
Types of non-volatile memory include Read Only Memory (ROM), Electrically Programmable Read Only Memory (EPROM), Electrically Erasable and Programmable Read Only Memory (EEPROM), Flash EEPROMs, Non-Volatile Static Random Access Memory (NVSRAM), Ferroelectric Random Access Memory (FeRAM), and the like.
Whilst some non-volatile memory is purely “read only”, with the “programming” being done by hard-coding the data during the memory fabrication process, other types are programmed electrically post-fabrication.
One type of programmable non-volatile memory the present invention relates to is Electrically Erasable and Programmable Read Only Memory (EEPROM), however the invention may equally be applied to other non-volatile memory types listed above. Electrically Erasable and Programmable Read Only Memory (EEPROM) can be split into two sub types: byte erasable and Flash EEPROM. As the name suggests, the byte erasable type can be erased and written in byte size chunks, whilst flash memory is written in byte (or larger) sized chunks, but is erased in sections (which are multiple bytes in size). The size of the sections erased in flash memory is part specific, and can be anywhere in size from meaning the entire memory array of the device to only a sub-portion, or sector, comprising a small number of individual bytes.
EEPROMs store information by storing charge on an insulated piece of semiconductor material, known as the floating gate. Typically, the insulating material is a layer of Silicon Dioxide. As is known in the art, this charge is moved onto the insulated material forming the memory cell by either Hot Carrier Injection (HCI) or Fowler-Nordheim Tunneling (FNT). Each individual memory cell can store a single bit of information, thus they are often referred to as bitcells.
Briefly, Hot Carrier Injection (via either Hot holes, i.e. positive charges, or Hot electrons, i.e. negative charges) works by applying a large voltage bias across the channel of the bitcell, resulting in the “heating”, i.e. energy injection, of the carriers within the channel, which provides some of them with enough energy to surmount the silicon dioxide energy barrier, and thus are “injected” into the insulated material.
Meanwhile, Fowler-Nordheim tunneling works by applying a high electric field between the gate of the bitcell and either the source or drain. Assuming the field is high enough, this high electric field lowers the height of the energy barrier of the silicon dioxide layer and thus allows electrons to “tunnel” across the insulated material and onto the floating gate forming the bitcell.
While either Hot Carrier Injection or Fowler-Nordheim Tunneling may be used to move charge onto the insulated floating gate of the bitcell, charge may only be removed from the insulated floating gate by Fowler-Nordheim tunneling. When using Fowler-Nordheim tunneling to remove charge from the floating gate, opposite bias conditions need to be applied.
The movement of the charge onto or off the floating gate is known as “programming” (of the bitcell). However, “programming” does not in itself refer to a particular data state of the bitcell (1 or 0), because due to possible logical inversion at the output from the core memory array and/or the output to the data bus, the programmed state may correspond to either a logic 1 or 0. For this reason, in the following description it will be assumed that “programmed” means that charge has been stored on the floating gate, whilst “unprogrammed” means that little or no charge is stored in the floating gate.
As is known in the art, the above described physical methods used to program the bitcells are carried out by biasing the terminals of the bitcell to be programmed (or read, or erased) with the correct voltages.
Since, in a typical memory array, there are multiple bitcells connected to the same bitlines, wordlines and sourcelines, problems can occur if the applied voltages and currents are not perfectly matched to the requirements of the bitcell being programmed. In other words, applying incorrect voltages and currents to the array can result in unintentional erasure or programming of the other bitcells not currently being programmed. These arise during programming and erasing, and are commonly referred to as disturbs.
In the case of flash memory, the array gets erased on an erase sector granularity (an erase sector being a predefined number of bitcells), however bitcells may be programmed on a bit by bit basis. Therefore, there are two types of unintended disturbs that may occur on erased bitcells, during the intended programming of another bitcell in the same high voltage sector:
1. Row disturb—occurs on bitcells sharing the same wordline but on a different bitline to the intended target bitcell. The Vgs (i.e. the voltage across the gate and source of the transistor forming the bitcell) of those bitcells is characterised as (Vpwl—(unselected bitline voltage)), where Vpwl is the voltage applied to the selected wordline during programming. In order to avoid row disturb, the Vgs should be negative enough to avoid generation of hot electrons in the channel of the unselected bitcell. This is called maintaining a row disturb margin.
2. Bitline disturb—occurs on bitcells sharing the same bitline but on a different wordline to the intended target bitcell (but in the same high voltage sector). This disturb mechanism is only applicable if the high voltage sector is bigger than a single wordline. The Vgs of those cells is (0V—(selected bitline voltage)). Similarly, in order to avoid bitline disturb, this Vgs must be negative enough to avoid the generation of hot electrons in the channel. It also has to be ensured that selected bitlines will never reach potentials too low to create such a disturb, but they need to be driven low enough to allow proper programming of the bitcells intended to be programmed.
It is desirable to provide an improved means for programming a non-volatile memory array